---
title: C++ 语言介绍
---

## C++ 语言历史和设计哲学

C++ 是一种功能强大、通用性强的编程语言，由 Bjarne Stroustrup 在 C 语言的基础上扩展创建，最初名为“带类的 C”。它的设计理念是“零开销原则”，即不使用的特性不应带来任何性能开销。C++ 融合了高级和低级编程能力，使其适用于广泛的应用场景。

## 与 JavaScript 的对比概述

| 特性           | JavaScript                               | C++                                      |
| :---------------- | :--------------------------------------- | :--------------------------------------- |
| **范式**      | 多范式（主要为函数式、面向对象、事件驱动） | 多范式（面向对象、泛型、过程式） |
| **类型**        | 动态类型，弱类型          | 静态类型，强类型         |
| **执行**     | 解释型（在浏览器/Node.js 中进行 JIT 编译） | 编译型                                 |
| **内存管理**  | 自动（垃圾回收）           | 手动（指针、`new`/`delete`）、智能指针 |
| **性能**   | 通常较慢（由于解释/垃圾回收） | 通常较快（编译型，底层控制） |
| **用例**     | Web 开发（前端/后端）、移动应用、桌面应用 | 系统编程、游戏开发、嵌入式系统、高性能计算 |

## 编译型 vs 解释型语言

**JavaScript（解释型/JIT 编译）：**
JavaScript 代码通常由解释器（如浏览器的 JavaScript 引擎或 Node.js）执行。虽然现代 JavaScript 引擎使用即时（JIT）编译将代码在运行时转换为机器码以提高性能，但其核心特点是代码不会预先编译成独立的执行文件。

**C++（编译型）：**
C++ 代码在执行前必须编译成机器码。这个过程包括：
1.  **预处理：** 处理 `#include` 和 `#define` 等指令。
2.  **编译：** 将预处理后的代码转换为汇编代码。
3.  **汇编：** 将汇编代码转换为机器码（目标文件）。
4.  **链接：** 将目标文件和库组合成一个可执行程序。

这个编译步骤允许进行广泛的优化，并生成高效的本地代码。

## C++ 应用场景和优势

**应用场景：**
*   **系统编程：** 操作系统、设备驱动、嵌入式系统。
*   **游戏开发：** 高性能游戏引擎（例如 Unreal Engine、Unity 的核心）。
*   **高性能计算：** 科学模拟、金融建模、交易系统。
*   **图形和多媒体：** 图像/视频处理、3D 图形。
*   **数据库：** 数据库系统（例如 MySQL、MongoDB）。
*   **编译器和解释器：** 构建编程语言工具。

**优势：**
*   **性能：** 由于直接内存访问和编译，性能接近裸机。
*   **控制：** 对硬件资源和内存的精细控制。
*   **可扩展性：** 适用于大型复杂系统。
*   **可移植性：** 代码可以在各种平台上编译和运行。
*   **丰富的生态系统：** 广泛的库和工具。

## 开发环境搭建

要编写和运行 C++ 代码，通常需要：
1.  **文本编辑器或 IDE：** Visual Studio Code、Visual Studio、CLion、Eclipse 等。
2.  **C++ 编译器：** GCC (GNU Compiler Collection)、Clang、MSVC (Microsoft Visual C++)。

**示例设置（Linux/macOS 与 GCC/Clang）：**
安装 build-essential (Linux) 或 Xcode Command Line Tools (macOS)。

```bash
# 在 Ubuntu/Debian 上
sudo apt update
sudo apt install build-essential

# 在 macOS 上
xcode-select --install
```

## 你的第一个 C++ 程序

让我们编写一个简单的“Hello, World!” C++ 程序。

<UniversalEditor title="Hello World Comparison" compare={true}>
```javascript !! js
// JavaScript: Hello World
console.log("Hello, World from JavaScript!");
```

```cpp !! cpp
// C++: Hello World
#include <iostream> // 包含输入/输出流库

int main() { // 主函数：程序的入口点
    std::cout << "Hello, World from C++!" << std::endl; // 打印到控制台
    return 0; // 表示成功执行
}
```
</UniversalEditor>

## 编译和链接过程

要编译并运行 C++ “Hello, World!” 程序（假设你将其保存为 `hello.cpp`）：

1.  **编译：**
    ```bash
    g++ hello.cpp -o hello
    ```
    *   `g++`：C++ 编译器（GCC 的一部分）。
    *   `hello.cpp`：你的源代码文件。
    *   `-o hello`：指定输出的可执行文件名为 `hello`。

2.  **运行：**
    ```bash
    ./hello
    ```
    这将执行编译后的程序，并在你的控制台打印“Hello, World from C++!”。

---

### 练习题：
1.  C++ 这样的编译型语言与 JavaScript 这样的解释型语言之间主要区别是什么？
2.  列举三个 C++ 优于 JavaScript 的常见应用领域，并解释原因。
3.  描述编译和链接一个简单的 C++ 程序所涉及的步骤。

### 项目构想：
*   用 C++ 创建一个简单的命令行计算器，可以执行基本的算术运算（加、减、乘、除）。
